# test02_gen.py
# 程序 = 数据类型(list) + 算法
# 1.按行读取文件(while True + readline/readlines)
# 2.每读取一行，向列表中添加一个元素(行数据)
# 3.判断此时列表的长度是否为10
#      是：通过yield将存储行数据的列表返回，并清空列表
# 4.当文件读取完毕时，判断此时列表是否为空
#    若不为空将剩余数据返回
def gen_file(fname):  # fname: 文件路径
    lines = []  # 存储行数据
    with open(fname, mode="r") as fr:
        for item in fr.readlines():  # item:行数据
            lines.append(item)
            if len(lines) == 10:
                yield lines
                lines.clear()  # 清空列表
    if len(lines) != 0:  # 列表还有不足10个元素
        yield lines
if __name__ == '__main__':
    gen = gen_file("/etc/passwd")
    for item in gen:
        print("lines:", item)
        print("=======================")